home *** CD-ROM | disk | FTP | other *** search
Wrap
10 CLEAR,,,,,100000:SCREEN@0:SCREEN 0:CLS:MOUSE 0:DIM BLB_MEM%(78000):DEF FONT"システム 12ドット" 20 PALETTE 9,[176,128,224]:PALETTE 6,[196,196,196]:PALETTE 8,[32,32,32] 30 PALETTE 1,[112,32,176]:PALETTE 7,[112,112,112]:LINE(0,0)-(639,479),PSET,%7,BF 35 BLB_RESO_X=640:BLB_RESO_Y=480 40 TITLE$="ファイル選択":WILD$="*":KEY_IN=1:FILE$="FILESEL.BAS":GOSUB *BLB_FILESEL 41 IF KRIGHT$(PATH$,1)<>"\" THEN PATH$=PATH$+"\" 42 LOCATE 0,5:IF FILE$="" THEN PRINT"ファイルは選択されませんでした。":END 50 PRINT PATH$+FILE$;" が選択されました。":END 60000 '----------------------- ファイルセレクター(16色) version 2.11 -------------------------------- 60001 '入力 title$ ・・・ タイトル 60002 ' wild$ ・・・ 拡張子ワイルドカード(英大文字3字 例:BAS , TIF , ???(*でも可)) 60003 ' 複数指定時は各拡張子をつなげる 例:BASC ASM(3字未満はスペースをあける) 60004 ' key_in ・・・ 入力フィールド 0=なし 1=あり 60005 ' file$ ・・・ 入力フィールドに最初に表示するファイル名(key_in=1のとき) 60006 '出力 file$ ・・・ ファイル名(KEY_IN=1ならば入力フィールドで編集されたファイル名) path$ ・・・ パス名 60007 '注意 def font"システム 12ドット" 及び dim blb_mem%(78000)を実行しておくこと 60008 ' mousepat.blbシリーズ必須 60009 ' 60010 *BLB_FILESEL 60011 BLB_DX%=185:BLB_DY%=124:BLB_CS%=0:DIM BLB_ICN&(31):FILE$=KMID$(FILE$,KINSTR(FILE$,":")+1) 60012 WHILE KINSTR(FILE$,"\")>0:FILE$=KMID$(FILE$,KINSTR(FILE$,"\")+1):WEND:BLB_F$=RIGHT$(FILE$,12) 60013 ' 60014 '画面描画 60015 ' 60016 MOUSE 1,,,0:GET@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM% 60017 LINE(BLB_DX%,BLB_DY%)-STEP(270,233),PSET,%8,BF,7 60018 LINE(BLB_DX%,BLB_DY%)-STEP(270,16),PSET,%8,BF,1 60019 LINE(BLB_DX%,BLB_DY%)-STEP(32+LEN(TITLE$)*6,16),PSET,%8,BF 60020 SYMBOL(BLB_DX%+24,BLB_DY%+3),TITLE$,.75!,.75!,7 60021 LINE(BLB_DX%+268,BLB_DY%)-STEP(1,232),PSET,%8,B:LINE-STEP(-268,0),PSET,%8 60022 LINE(BLB_DX%+2,BLB_DY%+2)-STEP(12,12),PSET,7,BF,%6 60023 LINE(BLB_DX%+2,BLB_DY%+2)-STEP(12,12),PSET,7 60024 LINE(BLB_DX%+2,BLB_DY%+14)-STEP(12,-12),PSET,7 60025 LINE(BLB_DX%+4,BLB_DY%+60)-STEP(86,15),PSET,%8,B 60026 LINE(BLB_DX%+4,BLB_DY%+78)-STEP(239,127),PSET,%8,B 60027 CONNECT(BLB_DX%+254,BLB_DY%+180)-STEP(1,0)-STEP(3,3)-STEP(0,1)-STEP(-7,0)-STEP(0,-1),%8,,F 60028 CONNECT(BLB_DX%+254,BLB_DY%+199)-STEP(1,0)-STEP(3,-3)-STEP(0,-1)-STEP(-7,0)-STEP(0,1),%8,,F 60029 CONNECT(BLB_DX%+167,BLB_DY%+208)-STEP(42,0)-STEP(3,3)-STEP(0,15)-STEP(-3,3)-STEP(-42,0)-STEP(-3,-3)-STEP(0,-15),%8,,F,7 60030 FOR I%=0 TO 1:CONNECT(BLB_DX%+168+I%*52,BLB_DY%+210)-STEP(40,0)-STEP(2,2)-STEP(0,13)-STEP(-2,2)-STEP(-40,0)-STEP(-2,-2)-STEP(0,-13),%8,,F,7 60031 SYMBOL STEP(10,1),KMID$("選択取消",I%*2+1,2),.75!,.75!,%8,,,,1 60032 LINE(BLB_DX%+262,BLB_DY%+174+I%*16)-STEP(-15,15),PSET,%8,B 60033 CONNECT STEP(3,-2)-STEP(10,0)-STEP(0,-10)-STEP(1,-1)-STEP(0,13)-STEP(-13,0),%8,,F,%8:NEXT 60034 CONNECT(BLB_DX%+185,BLB_DY%+60)-STEP(56,0)-STEP(2,2)-STEP(0,11)-STEP(-2,2)-STEP(-56,0)-STEP(-2,-2)-STEP(0,-11),%8,,F,7:SYMBOL STEP(10,0),"DIR移動",.75!,.75!,%8 60035 LINE(BLB_DX%+246,BLB_DY%+59)-STEP(17,17),PSET,%8,B 60036 A$="0006000f801fc03fe076606600000000e08b108a108ae08b008a0072" 60037 FOR I%=0 TO 13:BLB_ICN&(I%)=VAL("&h"+MID$(A$,I%*4+1,4)):NEXT 60038 PUT@(BLB_DX%+249,BLB_DY%+61)-(BLB_DX%+249+31,BLB_DY%+61+13),BLB_ICN&,,%8 60039 LINE(BLB_DX%+247,BLB_DY%+78)-STEP(15,96),PSET,%8,BF,1 60040 FOR I%=0 TO 1:LINE(BLB_DX%+4+I%*71,BLB_DY%+21)-STEP(15,36),PSET,%8,B:NEXT 60041 CONNECT(BLB_DX%+8,BLB_DY%+39)-STEP(6,-6)-STEP(0,12),%8,PSET,F,%8 60042 CONNECT(BLB_DX%+86,BLB_DY%+39)-STEP(-6,-6)-STEP(0,12),%8,PSET,F,%8 60043 LINE (BLB_DX%+22,BLB_DY%+21)-STEP(50,36),PSET,%8,B 60044 IF KEY_IN=1 THEN LINE(BLB_DX%+4,BLB_DY%+208)-STEP(90,15),PSET,%8,B:GOSUB *BLB_FS_PUT_FILENAME 60045 FOR I%=0 TO 15:LINE(BLB_DX%+95+(I% MOD 8)*21,BLB_DY%+21+(I%\8)*18)-STEP(21,18),PSET,%8,B 60046 SYMBOL(BLB_DX%+100+(I% MOD 8)*21,BLB_DY%+25+(I%\8)*18),AKCNV$(CHR$(I%+65-(I%>1))),.75!,.75!,%(8+(INP(&H31DC+(I%-(I%>1))*4)\255)*2*(I%<>15)),,,1 60047 NEXT:BLB_DRV%=-1:GOSUB *BLB_FS_GETFILE:GOSUB *BLB_FS_DIRPRINT:MOUSEPAT=0:GOSUB *BLB_MOUSEPAT 60048 GOSUB *BLB_FS_DRVXOR:WHILE INKEY$<>"":WEND 60049 ' 60050 'メインルーチン 60051 ' 60052 *BLB_FS_MAIN 60053 I%=ASC(INKEY$+CHR$(0)):IF I%=13 THEN I%=0:GOTO *BLB_FS_SEL2 ELSE IF I%=27 OR I%=24 THEN I%=-1:GOTO *BLB_FS_SEL2 ELSE IF I%>0 THEN GOSUB *BLB_FS_KEYINPUT 60054 IF MOUSE(2,0)=0 THEN *BLB_FS_MAIN 60055 BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60056 *BLB_FS_MAIN2 60057 IF BLB_MX%<0 OR BLB_MX%>270 OR BLB_MY%<0 OR BLB_MY%>233 THEN WHILE MOUSE(2,0):WEND:GOTO *BLB_FS_MAIN 60058 IF BLB_MX%>1 AND BLB_MX%<15 AND BLB_MY%>1 AND BLB_MY%<15 THEN *BLB_FS_EXITボタン 60059 IF BLB_MX%>94 AND BLB_MX%<263 AND BLB_MY%>20 AND BLB_MY%<58 THEN *BLB_FS_DRIVE1 60060 IF BLB_MX%>246 AND BLB_MX%<263 AND BLB_MY%>173 AND BLB_MY%<206 THEN *BLB_FS_UPDOWN 60061 IF BLB_MX%>247 AND BLB_MX%<262 AND BLB_MY%>78 AND BLB_MY%<174 THEN *BLB_FS_BAR 60062 IF BLB_MX%>4 AND BLB_MX%<244 AND BLB_MY%>78 AND BLB_MY%<203 THEN *BLB_FS_MARK 60063 IF BLB_MX%>246 AND BLB_MX%<263 AND BLB_MY%>59 AND BLB_MY%<76 THEN *BLB_FS_UPDIR 60064 IF BLB_MX%>182 AND BLB_MX%<244 AND BLB_MY%>59 AND BLB_MY%<76 THEN *BLB_FS_CHANGEDIR 60065 IF BLB_MX%>4 AND BLB_MX%<94 AND BLB_MY%>208 AND BLB_MY%<223 AND KEY_IN=1 THEN *BLB_FS_FNAME_CLICKED 60066 IF BLB_MX%>22 AND BLB_MX%<72 AND BLB_MY%>21 AND BLB_MY%<57 THEN *BLB_FS_DRIVE2 60067 IF BLB_MX%> 5 AND BLB_MX%<19 AND BLB_MY%>21 AND BLB_MY%<57 THEN *BLB_FS_DRIVE3 60068 IF BLB_MX%>76 AND BLB_MX%<90 AND BLB_MY%>21 AND BLB_MY%<57 THEN *BLB_FS_DRIVE3 60069 IF BLB_MX%>166 AND BLB_MX%<210 AND BLB_MY%>210 AND BLB_MY%<227 THEN *BLB_FS_SEL 60070 IF BLB_MX%>218 AND BLB_MX%<262 AND BLB_MY%>210 AND BLB_MY%<227 THEN *BLB_FS_SEL 60071 ' 60072 'ダイアログ移動 60073 ' 60074 *BLB_FS_MOVE 60075 A%=BLB_DX%:B%=BLB_DY%:BLB_ICN&(0)=BLB_MX%:BLB_ICN&(1)=BLB_MY% 60076 LINE(A%,B%)-STEP(270,233),XOR,%7,B:MOUSEPAT=3:GOSUB *BLB_MOUSEPAT 60077 MOUSE 4,BLB_MX%,BLB_MY%,BLB_RESO_X-271+BLB_MX%,BLB_RESO_Y-234+BLB_MY% 60078 WHILE MOUSE(2,0):C%=MOUSE(0)-BLB_ICN&(0):I%=MOUSE(1)-BLB_ICN&(1) 60079 IF A%<>C% OR B%<>I% THEN LINE(A%,B%)-STEP(270,233),XOR,%7,B:LINE(C%,I%)-STEP(270,233),XOR,%7,B:A%=C%:B%=I% 60080 WEND:LINE(A%,B%)-STEP(270,233),XOR,%7,B 60081 MOUSEPAT=0:GOSUB *BLB_MOUSEPAT:MOUSE 4,0,0,BLB_RESO_X-1,BLB_RESO_Y-1 60082 IF A%=BLB_DX% AND B%=BLB_DY% THEN *BLB_FS_MAIN 60083 GET@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM%,40000 60084 PUT@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM% 60085 BLB_DX%=A%:BLB_DY%=B%:GET@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM% 60086 PUT@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM%,,,,,40000:GOTO *BLB_FS_MAIN 60087 ' 60088 'ドライブ名選択 60089 ' 60090 *BLB_FS_DRIVE1 60091 I%=(BLB_MX%-95)\21+((BLB_MY%-21)\18)*8:I%=I%-(I%>1):IF INP(&H31DC+I%*4)=255 THEN *BLB_FS_MOVE 60092 GOSUB *BLB_FS_DRVXOR:GOSUB *BLB_FS_ERASE:BLB_DRV%=I%:GOSUB *BLB_FS_DRVXOR 60093 SHELL CHR$(I%+65)+":":GOSUB *BLB_FS_GETFILE:GOSUB *BLB_FS_DIRPRINT 60094 WHILE MOUSE(2,0):WEND:GOTO *BLB_FS_MAIN 60095 'ドライブアイコン選択 60096 *BLB_FS_DRIVE2 60097 B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60098 A%=(BLB_MX%>22)*(BLB_MX%<72)*(BLB_MY%>21)*(BLB_MY%<57) 60099 IF A%<>B% THEN LINE(BLB_DX%+23,BLB_DY%+22)-STEP(48,34),XOR,%7,BF:B%=A% 60100 WEND:IF B%=0 THEN *BLB_FS_MAIN ELSE LINE(BLB_DX%+23,BLB_DY%+22)-STEP(48,34),XOR,%7,BF 60101 GOSUB *BLB_FS_ERASE:GOSUB *BLB_FS_GETFILE:GOSUB *BLB_FS_DIRPRINT:GOTO *BLB_FS_MAIN 60102 '←→押下 60103 *BLB_FS_DRIVE3 60104 I%=BLB_MX%<50:B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60105 A%=(BLB_MX%>76+I%*71)*(BLB_MX%<90+I%*71)*(BLB_MY%>21)*(BLB_MY%<57) 60106 IF A%<>B% THEN LINE(BLB_DX%+76+I%*71,BLB_DY%+22)-STEP(13,34),XOR,%7,BF:B%=A% 60107 WEND:IF B%=0 THEN *BLB_FS_MAIN ELSE LINE(BLB_DX%+76+I%*71,BLB_DY%+22)-STEP(13,34),XOR,%7,BF 60108 A%=I%*2+1:I%=(BLB_DRV%+A%+17)MOD 17:WHILE INP(&H31DC+I%*4)=255 AND I%<16 OR I%=2 60109 I%=(I%+A%+17)MOD 17:WEND 60110 GOSUB *BLB_FS_DRVXOR:GOSUB *BLB_FS_ERASE:BLB_DRV%=I%:BLB_FILE&(1)=-1:BLB_FILE$(0)=CHR$(I%+65)+": ":SHELL BLB_FILE$(0):GOSUB *BLB_FS_DRVXOR:GOSUB *BLB_FS_DIRPRINT:GOTO *BLB_FS_MAIN 60111 ' 60112 'ファイル名クリック処理 60113 ' 60114 *BLB_FS_MARK 60115 WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60116 B%=BLB_FSEL%-BLB_FILE&(0):A%=(BLB_MY%-79)\14+BLB_FILE&(0) 60117 IF BLB_MX%>4 AND BLB_MX%<244 AND BLB_MY%>78 AND BLB_MY%<203 THEN 60118 IF A%<>BLB_FSEL% THEN 60119 IF B%>=0 AND B%<9 THEN LINE(BLB_DX%+5,BLB_DY%+79+B%*14)-STEP(237,13),XOR,%7,BF 60120 IF A%=<BLB_FILE&(1) THEN LINE(BLB_DX%+5,BLB_DY%+79+(A%-BLB_FILE&(0))*14)-STEP(237,13),XOR,%7,BF:BLB_FSEL%=A% ELSE BLB_FSEL%=0 60121 ENDIF 60122 ELSE 60123 I%=(BLB_MY%<79)-(BLB_MY%>202) 60124 IF BLB_FSEL%>0 THEN LINE(BLB_DX%+5,BLB_DY%+79+B%*14)-STEP(237,13),XOR,%7,BF:BLB_FSEL%=0 60125 IF I%+BLB_FILE&(0)>0 AND I%+BLB_FILE&(0)+7<BLB_FILE&(1) AND I%<>0 THEN GOSUB *BLB_FS_SCROLL 60126 ENDIF 60127 WEND:IF ASC(BLB_FILE$(BLB_FSEL%))=32 THEN GOSUB *BLB_FS_選択:GOSUB *BLB_FS_PUT_FILENAME 60128 A%=INP(&H3B04)*100/128:I%=0:WHILE MOUSE(2,0)=0 AND I%<A%:WAIT 1:I%=I%+1:WEND 60129 IF I%=A% THEN *BLB_FS_MAIN 60130 BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60131 IF BLB_MX%<5 OR BLB_MX%>243 OR BLB_MY%<79 OR BLB_MY%>202 THEN *BLB_FS_MAIN2 60132 IF BLB_FSEL%<>(BLB_MY%-79)\14+BLB_FILE&(0) THEN *BLB_FS_MARK 60133 'ダブルクリック成立 60134 GOSUB *BLB_FS_選択:IF ASC(BLB_FILE$(BLB_FSEL%))=32 THEN *BLB_FS_終了 ELSE *BLB_FS_CHANGEDIR2 60135 ' 60136 '↑UPボタン処理 60137 ' 60138 *BLB_FS_UPDIR 60139 B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60140 A%=(BLB_MX%>246)*(BLB_MX%<263)*(BLB_MY%>59)*(BLB_MY%<76) 60141 IF A%<>B% THEN LINE(BLB_DX%+247,BLB_DY%+60)-STEP(15,15),XOR,%7,BF:B%=A% 60142 WEND:IF B%=0 THEN *BLB_FS_MAIN 60143 LINE(BLB_DX%+247,BLB_DY%+60)-STEP(15,15),XOR,%7,BF:IF LEN(BLB_FILE$(0))=3 THEN *BLB_FS_MAIN 60144 A$="..":GOSUB *BLB_FS_SECURITY:GOTO *BLB_FS_MAIN 60145 ' 60146 'ディレクトリ移動 60147 ' 60148 *BLB_FS_CHANGEDIR 60149 B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60150 A%=(BLB_MX%>182)*(BLB_MX%<244)*(BLB_MY%>59)*(BLB_MY%<76) 60151 IF A%<>B% THEN CONNECT(BLB_DX%+185,BLB_DY%+61)-STEP(56,0)-STEP(1,1)-STEP(0,11)-STEP(-1,1)-STEP(-56,0)-STEP(-1,-1)-STEP(0,-11),%7,XOR,F,%7:B%=A% 60152 WEND:IF B%=0 THEN *BLB_FS_MAIN 60153 CONNECT(BLB_DX%+185,BLB_DY%+61)-STEP(56,0)-STEP(1,1)-STEP(0,11)-STEP(-1,1)-STEP(-56,0)-STEP(-1,-1)-STEP(0,-11),%7,XOR,F,%7 60154 IF BLB_FSEL%=0 THEN *BLB_FS_MAIN 60155 GOSUB *BLB_FS_選択:BLB_CS%=0:GOSUB *BLB_FS_PUT_FILENAME:IF ASC(BLB_FILE$(BLB_FSEL%))=32 THEN *BLB_FS_MAIN 60156 *BLB_FS_CHANGEDIR2 60157 IF LEFT$(FILE$,2)="<ル" THEN FILE$="\" ELSE IF KLEFT$(FILE$,2)="<親" THEN FILE$=".." 60158 A$=FILE$:GOSUB *BLB_FS_SECURITY:GOTO *BLB_FS_MAIN 60159 ' 60160 '▲▼ボタン処理 60161 ' 60162 *BLB_FS_UPDOWN 60163 A%=0:C%=(BLB_MY%-174)\16 60164 WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60165 B%=A%:A%=(BLB_MX%>246)*(BLB_MX%<263)*(BLB_MY%>173+C%*16)*(BLB_MY%<189+C%*16) 60166 IF B%<>A% THEN CONNECT(BLB_DX%+250,BLB_DY%+187+16*C%)-STEP(10,0)-STEP(0,-10)-STEP(1,-1)-STEP(0,12)-STEP(-12,0),%(8+7*A%):B%=A% 60167 IF A%=1 AND (C%=0 AND BLB_FILE&(0)>1 OR C%=1 AND BLB_FILE&(0)+9=<BLB_FILE&(1)) THEN 60168 BLB_MX%=B%:I%=C%*2-1:GOSUB *BLB_FS_SCROLL:B%=BLB_MX% 60169 ENDIF 60170 WEND:CONNECT(BLB_DX%+250,BLB_DY%+187+16*C%)-STEP(10,0)-STEP(0,-10)-STEP(1,-1)-STEP(0,12)-STEP(-12,0),%8:GOTO *BLB_FS_MAIN 60171 ' 60172 'バー押下処理 60173 ' 60174 *BLB_FS_BAR:MOUSEPAT=3:GOSUB *BLB_MOUSEPAT 60175 WHILE MOUSE(2,0):IF ABS(MOUSE(0)-BLB_DX%-255)<25 AND BLB_FILE&(1)>9 THEN 60176 A%=(MOUSE(1)-BLB_DY%-79-BLB_BARL%\2)*BLB_FILE&(1)/94 60177 IF A%<1 THEN A%=1 ELSE IF A%+9>BLB_FILE&(1) THEN A%=BLB_FILE&(1)-8 60178 I%=A%-BLB_FILE&(0):IF I%<>0 THEN IF ABS(I%)<8 THEN GOSUB *BLB_FS_SCROLL ELSE BLB_FILE&(0)=A%:B%=A%+8:GOSUB *BLB_FS_PRINT 60179 ENDIF 60180 WEND:MOUSEPAT=0:GOSUB *BLB_MOUSEPAT:GOTO *BLB_FS_MAIN 60181 ' 60182 'EXITボタン 60183 ' 60184 *BLB_FS_EXITボタン 60185 B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%:BLB_MY%=MOUSE(1)-BLB_DY% 60186 A%=(BLB_MX%>1)*(BLB_MX%<15)*(BLB_MY%>1)*(BLB_MY%<15) 60187 IF A%<>B% THEN LINE(BLB_DX%+2,BLB_DY%+2)-STEP(12,12),XOR,%7,BF:B%=A% 60188 WEND:IF B%=1 THEN FILE$="":PATH$="":GOTO *BLB_FS_終了 ELSE *BLB_FS_MAIN 60189 *BLB_FS_選択 60190 PATH$=BLB_FILE$(0):A$=MID$(BLB_FILE$(BLB_FSEL%),2,12):MID$(A$,9)="." 60191 FILE$="":FOR I%=1 TO KLEN(A$):IF KMID$(A$,I%,1)<>" " THEN FILE$=FILE$+KMID$(A$,I%,1) 60192 NEXT:IF ASC(BLB_FILE$(BLB_FSEL%))=32 THEN BLB_F$=FILE$:BLB_CS%=0:RETURN ELSE RETURN 60193 *BLB_FS_終了 60194 ERASE BLB_ICN&,BLB_FILE$:PUT@A(BLB_DX%,BLB_DY%)-(BLB_DX%+270,BLB_DY%+233),BLB_MEM%:RETURN 60195 ' 60196 '選択/取消ボタン 60197 ' 60198 *BLB_FS_SEL 60199 I%=BLB_MX%>210:B%=0:WHILE MOUSE(2,0):BLB_MX%=MOUSE(0)-BLB_DX%+I%*52:BLB_MY%=MOUSE(1)-BLB_DY% 60200 A%=(BLB_MX%>166)*(BLB_MX%<210)*(BLB_MY%>210)*(BLB_MY%<227) 60201 IF A%<>B% THEN CONNECT(BLB_DX%+168-I%*52,BLB_DY%+211)-STEP(40,0)-STEP(1,1)-STEP(0,13)-STEP(-1,1)-STEP(-40,0)-STEP(-1,-1)-STEP(0,-13),%7,XOR,F,%7:B%=A% 60202 WEND:IF B%=0 THEN *BLB_FS_MAIN 60203 CONNECT(BLB_DX%+168-I%*52,BLB_DY%+211)-STEP(40,0)-STEP(1,1)-STEP(0,13)-STEP(-1,1)-STEP(-40,0)-STEP(-1,-1)-STEP(0,-13),%7,XOR,F,%7 60204 *BLB_FS_SEL2 60205 IF I%<0 THEN FILE$="":PATH$="":GOTO *BLB_FS_終了 ELSE IF (BLB_FSEL%=0 AND KEY_IN=0) OR (KEY_IN=1 AND BLB_F$="") THEN *BLB_FS_MAIN 60206 IF KEY_IN=0 THEN GOSUB *BLB_FS_選択:IF ASC(BLB_FILE$(BLB_FSEL%))=60 THEN *BLB_FS_MAIN 60207 IF KEY_IN=1 THEN PATH$=BLB_FILE$(0):FILE$=BLB_F$ 60208 GOTO *BLB_FS_終了 60209 ' 60210 'ファイル名取得 (BLB_FILE&(0)=表示開始FILE No. BLB_FILE&(1)=ファイル数+1) 60211 ' 60212 *BLB_FS_GETFILE:MOUSEPAT=1:GOSUB *BLB_MOUSEPAT 60213 ON ERROR GOTO *BLB_FS_GF_ERROR:BLB_FILE&(0)=1:BLB_FILE&(2)=0:BLB_FSEL%=0:FILES ,C,BLB_FILE&:FILES ,C,BLB_FILE&:BLB_FILE&(2)=BLB_FILE&(1) 60214 DIM BLB_F$(BLB_FILE&(1)),BLB_FILE$(BLB_FILE&(1)) 60215 FILES ,N,BLB_F$:GOSUB *BLB_FS_SORT:A%=1:BLB_FILE$(0)=BLB_F$(0) 60216 I%=1:WHILE I%=<BLB_FILE&(1):A%=A%-(MID$(BLB_F$(I%),17,1)="-"):I%=I%+1:WEND 60217 B%=1:I%=1:WHILE I%=<BLB_FILE&(1) 60218 IF MID$(BLB_F$(I%),17,1)="-" THEN 60219 BLB_FILE$(B%)=BLB_F$(I%):B%=B%+1 60220 ELSE 60221 IF INSTR(WILD$,"???")+INSTR(WILD$,"*")-(INSTR(WILD$,MID$(BLB_F$(I%),10,3))MOD 3=1) THEN BLB_FILE$(A%)=BLB_F$(I%):A%=A%+1 60222 ENDIF 60223 I%=I%+1:WEND:BLB_FILE&(1)=A%-1:ERASE BLB_F$:GOSUB *BLB_FS_PROCESSING 60224 *BLB_FS_GFRET:ON ERROR GOTO 0:A%=1:B%=9:GOSUB *BLB_FS_PRINT:MOUSEPAT=0:GOSUB *BLB_MOUSEPAT:RETURN 60225 *BLB_FS_GF_ERROR:IF ERR=63 THEN RESUME NEXT 60226 IF BLB_DRV%<0 THEN BLB_DRV%=16:SHELL"Q:":RESUME 60227 BLB_FILE&(1)=-1:BLB_FILE$(0)=CHR$(BLB_DRV%+65)+":<Not Ready>":RESUME *BLB_FS_GFRET 60228 ' 60229 'ファイル名加工 60230 ' 60231 *BLB_FS_PROCESSING 60232 I%=1:WHILE I%=<BLB_FILE&(1):A$=BLB_FILE$(I%):MID$(A$,33)="-":MID$(A$,36)="-" 60233 IF MID$(A$,17,1)="-" THEN 60234 A$="<"+LEFT$(A$,12)+"> "+MID$(A$,31,14) 60235 IF MID$(A$,2,2)=". " THEN A$="<<ルートディレクトリ>>" 60236 IF MID$(A$,2,2)=".." THEN A$="<<親ディレクトリ >>" 60237 ELSE 60238 A$=" "+LEFT$(A$,12)+" "+MID$(A$,17,10)+" "+MID$(A$,31,14) 60239 ENDIF 60240 BLB_FILE$(I%)=A$:I%=I%+1:WEND:RETURN 60241 ' 60242 'カレントドライブ&ディレクトリ名表示 60243 ' 60244 *BLB_FS_DIRPRINT 60245 A%=ASC(BLB_FILE$(0))-65:B%=INP(&H31DC+A%*4):BLB_DRV%=A% 60246 IF A%=16 THEN C%=68 ELSE IF B%=0 THEN C%=65+INP(&H31DC+A%*4+2)\2 ELSE IF B%=2 THEN C%=72 60247 IF B%=3 THEN 60248 FOR I%=0 TO 31:BLB_ICN&(I%)=0:NEXT 60249 A$="30180C06482412094824120948241209FEFFFF7F03000040030000402384C1436386214263462242A3452242A345C2432324444223E4274223242442232424420300004003000040FFFFFF7FFFFFFF3F48241209482412094824120930180C06" 60250 FOR I%=0 TO 95:POKE VARPTR(BLB_ICN&(5))+(I%\4)*4+(3-I% MOD 4),VAL("&h"+MID$(A$,I%*2+1,2)):NEXT 60251 ELSE 60252 FOR I%=0 TO 31:BLB_ICN&(I%)=PEEK([&H108]&H27F00+C%*256+I%*4,4):NEXT 60253 ENDIF 60254 PUT@(BLB_DX%+32,BLB_DY%+24)-(BLB_DX%+63,BLB_DY%+55),BLB_ICN&,,%8 60255 IF BLB_FILE&(1)>=0 THEN 60256 A$=STR$(DSKF(A%)):A%=LEN(A$)-2:I%=0 60257 WHILE I%<A%\3:A$=LEFT$(A$,LEN(A$)-3-I%*4)+","+MID$(A$,LEN(A$)-2-I%*4):I%=I%+1:WEND 60258 SYMBOL(BLB_DX%+100,BLB_DY%+62),RIGHT$(" "+A$,9)+" KB",.75!,.75!,%8 60259 ENDIF 60260 *BLB_FS_DIRPRINT2 60261 A$=MID$(BLB_FILE$(0),3) 60262 WHILE KINSTR(A$,"\")>0:A$=KMID$(A$,KINSTR(A$,"\")+1):WEND:IF A$="" THEN A$="\" 60263 LINE(BLB_DX%+5,BLB_DY%+61)-STEP(84,13),PSET,7,BF 60264 SYMBOL(BLB_DX%+12,BLB_DY%+62),A$,.75!,.75!,%8 60265 RETURN 60266 ' 60267 'カレントドライブ&ディレクトリ名消去 60268 ' 60269 *BLB_FS_ERASE 60270 LINE(BLB_DX%+32,BLB_DY%+23)-STEP(31,31),PSET,7,BF 60271 LINE(BLB_DX%+100,BLB_DY%+62)-STEP(71,11),PSET,7,BF 60272 *BLB_FS_ERASE2 60273 LINE(BLB_DX%+5,BLB_DY%+79)-STEP(237,125),PSET,7,BF:BLB_FILE&(0)=0:BLB_FILE&(2)=0:ERASE BLB_FILE$:RETURN 60274 *BLB_FS_DRVXOR 60275 A%=BLB_DRV%+(BLB_DRV%>1) 60276 LINE(BLB_DX%+96+(A% MOD 8)*21,BLB_DY%+22+(A%\8)*18)-STEP(19,16),XOR,%7,BF:RETURN 60277 ' 60278 'ファイル名&バー表示(1=<A%~B%(絶対位置)) 使用変数 I% 60279 ' 60280 *BLB_FS_PRINT 60281 MOUSE 1,,,0:FOR I%=A% TO B% 60282 LINE(BLB_DX%+5,BLB_DY%+79+(I%-BLB_FILE&(0))*14)-STEP(237,13),PSET,%15+(I%=BLB_FSEL%)*7,BF 60283 IF I%=<BLB_FILE&(1) THEN 60284 SYMBOL(BLB_DX%+7,BLB_DY%+80+(I%-BLB_FILE&(0))*14),BLB_FILE$(I%),.75!,.75!,%8-(I%=BLB_FSEL%)*7 60285 ENDIF 60286 NEXT:IF BLB_FILE&(1)<10 THEN 60287 BLB_BARL%=88:BLB_BARY%=0 60288 ELSE 60289 BLB_BARL%=792/BLB_FILE&(1):BLB_BARY%=(88-BLB_BARL%)*(BLB_FILE&(0)-1)/(BLB_FILE&(1)-9) 60290 LINE(BLB_DX%+248,BLB_DY%+79)-STEP(13,94),PSET,1,BF 60291 ENDIF 60292 LINE(BLB_DX%+248,BLB_DY%+79+BLB_BARY%)-STEP(13,BLB_BARL%+6),PSET,%8,BF,7 60293 CONNECT STEP(-1,-1)-STEP(0,-3-BLB_BARL%)-STEP(-1,1)-STEP(0,BLB_BARL%+1)-STEP(-8,0)-STEP(-1,1)-STEP(9,0),%8:MOUSE 1,,,1:RETURN 60294 ' 60295 '部分スクロール処理 入力 I%{上-7≦I%≦7下 I≠0} 使用変数 A% B% I% 60296 ' 60297 *BLB_FS_SCROLL 60298 IF I%<0 THEN 60299 GET@A(BLB_DX%+5,BLB_DY%+79)-(BLB_DX%+242,BLB_DY%+204+I%*14),BLB_MEM%,40000 60300 PUT@A(BLB_DX%+5,BLB_DY%+79-I%*14)-(BLB_DX%+242,BLB_DY%+204),BLB_MEM%,,,,,40000:A%=0:B%=-I%-1 60301 ELSE 60302 GET@A(BLB_DX%+5,BLB_DY%+79+I%*14)-(BLB_DX%+242,BLB_DY%+204),BLB_MEM%,40000 60303 PUT@A(BLB_DX%+5,BLB_DY%+79)-(BLB_DX%+242,BLB_DY%+204-I%*14),BLB_MEM%,,,,,40000:A%=9-I%:B%=8 60304 ENDIF 60305 BLB_FILE&(0)=BLB_FILE&(0)+I%:A%=A%+BLB_FILE&(0):B%=B%+BLB_FILE&(0):GOSUB *BLB_FS_PRINT:RETURN 60306 ' 60307 'ファイル名 ソート(シェルソート) ただしCD-ROMはソートを行わない 60308 ' 60309 *BLB_FS_SORT 60310 IF ASC(BLB_F$(0))=81 OR INP(&H31DC+BLB_DRV%*4)=208 THEN RETURN 60311 A%=(BLB_FILE&(1)-1)\2:WHILE A%>0:B%=BLB_FILE&(1)-1-A% 60312 *BLB_FS_SORTLOOP:C%=0:FOR I%=0 TO B% 60313 IF BLB_F$(I%+1)>BLB_F$(I%+A%+1) THEN SWAP BLB_F$(I%+1),BLB_F$(I%+A%+1):C%=I% 60314 NEXT:B%=C%-A%:IF C% THEN *BLB_FS_SORTLOOP ELSE A%=(A%+1)\3:WEND:RETURN 60315 ' 60316 'ディレクトリ移動実行 (入力:A$・・・ディレクトリ名) 60317 ' 60318 *BLB_FS_SECURITY:MOUSEPAT=1:GOSUB *BLB_MOUSEPAT 60319 B%=BLB_FILE&(2):GOSUB *BLB_FS_ERASE2:ON ERROR GOTO *BLB_FS_SECURITY_ERROR 60320 FILES,C,BLB_ICN&:FILES,C,BLB_ICN&:IF BLB_ICN&(1)<>B% AND B%<>0 THEN BLB_FILE&(1)=BLB_ICN&(1):ERROR 63 60321 SHELL"CD "+A$:GOSUB *BLB_FS_GETFILE:GOSUB *BLB_FS_DIRPRINT2 60322 WHILE MOUSE(2,0):WEND:ON ERROR GOTO 0:RETURN 60323 *BLB_FS_SECURITY_ERROR 60324 IF ERR=63 THEN SHELL"CD \":A$="\":BLB_FILE$(0)="":RESUME *BLB_FS_SECURITY 60325 BLB_FILE&(1)=-1:BLB_FILE$(0)=CHR$(BLB_DRV%+65)+":<Not Ready>":BLB_FILE&(0)=1:BLB_FSEL%=0:GOSUB *BLB_FS_DIRPRINT:RESUME *BLB_FS_GFRET 60326 ' 60327 'キー入力(KEY_IN=1のときのみ) 60328 ' 60329 *BLB_FS_KEYINPUT 60330 IF I%>128 AND I%<160 OR I%>223 THEN A$=CHR$(I%)+INKEY$ ELSE A$=CHR$(I%) 60331 IF I%=8 AND BLB_CS%>0 THEN BLB_CS%=LEN(KLEFT$(BLB_F$,KLEN(LEFT$(BLB_F$,BLB_CS%))-1)) 60332 IF (I%=127 OR I%=8)AND LEN(BLB_F$)>BLB_CS% THEN 60333 BLB_F$=LEFT$(BLB_F$,BLB_CS%)+MID$(BLB_F$,BLB_CS%+2+KTYPE(MID$(BLB_F$,BLB_CS%+1,2),1)) 60334 GOSUB *BLB_FS_PUT_FILENAME 60335 ELSE IF I%=29 AND BLB_CS%>0 THEN 60336 GOSUB *BLB_FS_CUR_ERASE:BLB_CS%=LEN(KLEFT$(BLB_F$,KLEN(LEFT$(BLB_F$,BLB_CS%))-1)):GOSUB *BLB_FS_CUR_PUT 60337 ELSE IF I%=28 AND BLB_CS%<LEN(BLB_F$) AND BLB_CS%<12-LEN(KRIGHT$(BLB_F$,1)) THEN 60338 GOSUB *BLB_FS_CUR_ERASE:BLB_CS%=BLB_CS%+1+KTYPE(MID$(BLB_F$,BLB_CS%+1,2),1):GOSUB *BLB_FS_CUR_PUT 60339 ENDIF 60340 IF I%<32 OR I%=127 THEN RETURN 60341 A$=LEFT$(BLB_F$,BLB_CS%)+A$+MID$(BLB_F$,BLB_CS%+1):IF LEN(A$)>12 THEN RETURN 60342 BLB_F$=A$:I%=BLB_CS%+1-(I%>128 AND I%<160 OR I%>223):IF I%<12 THEN BLB_CS%=I% 60343 GOSUB *BLB_FS_PUT_FILENAME:RETURN 60344 *BLB_FS_PUT_FILENAME :IF KEY_IN=0 THEN RETURN 60345 LINE(BLB_DX%+13,BLB_DY%+210)-STEP(71,11),PSET,7,BF 60346 SYMBOL(BLB_DX%+13,BLB_DY%+210),RIGHT$(BLB_F$,12),.75!,.75!,%8 60347 *BLB_FS_CUR_PUT 60348 GET@A(BLB_DX%+13+BLB_CS%*6,BLB_DY%+210)-(BLB_DX%+14+BLB_CS%*6,BLB_DY%+221),BLB_MEM%,77789 60349 LINE(BLB_DX%+13+BLB_CS%*6,BLB_DY%+210)-STEP(1,11),PSET,2,B:RETURN 60350 *BLB_FS_CUR_ERASE 60351 PUT@A(BLB_DX%+13+BLB_CS%*6,BLB_DY%+210)-(BLB_DX%+14+BLB_CS%*6,BLB_DY%+221),BLB_MEM%,,,,,77789:RETURN 60352 *BLB_FS_FNAME_CLICKED 60353 IF BLB_MX%<13 THEN BLB_MX%=13 60354 GOSUB *BLB_FS_CUR_ERASE:BLB_CS%=LEN(KLEFT$(BLB_F$,KLEN(LEFT$(BLB_F$,(BLB_MX%-13)\6)+" ")-1)) 60355 IF BLB_CS%>=12 THEN BLB_CS%=LEN(KLEFT$(BLB_F$,KLEN(LEFT$(BLB_F$,(BLB_MX%-13)\6)+" ")-2)) 60356 GOSUB *BLB_FS_CUR_PUT:WHILE MOUSE(2,0):WEND:GOTO *BLB_FS_MAIN 60400 '------------------- マウスカーソル形状設定 ver 1.60 一画面モード専用 -------------------------- 60401 '入力 mousepat = マウスパターン番号 60402 ' (0=通常 1=時計 2=鉛筆 3=手 4=毛抜き 5=スポイト 6=指 7=筆 8=カッター) 60403 ' ( 負数はアイコン番号(絶対値)。絵柄については TOWNS GEARディクショナリ参照) 60404 ' ( ただし、負数を指定したときは読み取り位置の補正は行われない) 60405 *BLB_MOUSEPAT 60406 IF BLB_MOUSEPAT%=0 THEN DIM BLB_MA&(31),BLB_MD&(31):MOUSE 0:MOUSE 1,320,240,0:BLB_MOUSEPAT%=1 60407 MOUSE 3,0,INP(&H3B06):MOUSE 3,1,INP(&H3B06) 60408 IF MOUSEPAT<0 THEN *BLB_MOUSEPAT2 60409 FOR I%=0 TO 31:BLB_MA&(I%)=PEEK([264]&H2D080+I%*4+MOUSEPAT*256,4) 60410 BLB_MD&(I%)=BLB_MA&(I%) OR PEEK([264]&H2D000+MOUSEPAT*256+I%*4,4) XOR -1 60411 NEXT:MOUSE 1,,,1 60412 MOUSE 6,0,BLB_MA&,BLB_MD&,ASC(MID$("1?1:21111",MOUSEPAT+1))-48,ASC(MID$("1?1:L111N",MOUSEPAT+1))-48:RETURN 60413 *BLB_MOUSEPAT2 60414 FOR I%=0 TO 31:BLB_MA&(I%)=PEEK([264]&H27F80+I%*4-MOUSEPAT*256,4) 60415 BLB_MD&(I%)=(BLB_MA&(I%)XOR-1)AND(PEEK([264]&H27F00-MOUSEPAT*256+I%*4,4)XOR-1) 60416 NEXT:MOUSE 1,,,1:MOUSE 6,0,BLB_MA&,BLB_MD&,15,15:RETURN